import axios from 'axios'
import { Promise } from 'core-js'
import { Message } from 'element-ui'
// import { MessageBox, Message } from 'element-ui'
import store from '@/store'
import router from '@/router'
// import { getToken } from '@/utils/auth'

// create an axios instance
const service = axios.create({
  baseURL: process.env.VUE_APP_BASE_API, // url = base url + request url
  //   baseURL: 'http://ihrm-java.itheima.net',
  timeout: 5000
})

// 请求拦截器
service.interceptors.request.use(
  config => {
    // 取token
    const token = store.state.user.token

    // 如果有token加请求头
    if (token) {
      config.headers['Authorization'] = 'Bearer ' + token
    }
    return config
  },
  error => {
    console.log(error)
  }
)

// 响应拦截器
service.interceptors.response.use(response => {
  // 根据响应的success逻辑判断
  if (response.data.success) {
    // 为true直接返回data
    return response.data
  } else {
    // 为false提示错误,并抛出这个错误
    Message.error(response.data.message)
    return Promise.reject(new Error(response.data.message))
  }
}, error => {
  // 这是响应拦截器里的错误分支
  // 判断与后台约定好的数值
  if (error.response && error.response.data && error.response.data.code === 10002) {
    // 调用用户登出方法,清除过期token和用户信息
    store.dispatch('user/userLogout')

    // 并跳转到登录页面
    router.push('/login?Redirect=' + router.Redirect)
  } else {
    Message.error(error.message)
  }

  // 返回一个错误promise
  return Promise.reject(new Error(error.message))
}
)

export default service
